﻿IF EXISTS(SELECT * FROM sys.databases WHERE name = 'electrondb')
	BEGIN
		USE master		
		DROP DATABASE electrondb;
		CREATE DATABASE electrondb;
	END
ELSE
	BEGIN
		CREATE DATABASE electrondb;
	END
GO

SET QUOTED_IDENTIFIER OFF;
GO
USE [electrondb];
GO
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
GO
IF OBJECT_ID(N'[dbo].[FK_DetalleVenta_Venta_Venta_VentaId]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[DetalleVenta] DROP CONSTRAINT [FK_DetalleVenta_Venta_Venta_VentaId];
GO
IF OBJECT_ID(N'[dbo].[FK_DetalleVenta_Producto_Producto_ProductoId]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[DetalleVenta] DROP CONSTRAINT [FK_DetalleVenta_Producto_Producto_ProductoId];
GO
IF OBJECT_ID(N'[dbo].[FK_Venta_UsuarioVenta_Usuario_UsuarioId]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Venta] DROP CONSTRAINT [FK_Venta_UsuarioVenta_Usuario_UsuarioId];
GO
IF OBJECT_ID(N'[dbo].[FK_Venta_UsuarioCaja_Usuario_UsuarioId]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Venta] DROP CONSTRAINT [FK_Venta_UsuarioCaja_Usuario_UsuarioId];
GO
IF OBJECT_ID(N'[dbo].[FK_Venta_estado_estado_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Venta] DROP CONSTRAINT [FK_Venta_estado_estado_id];
GO
IF OBJECT_ID(N'[dbo].[FK_Venta_TipoPago_TipoPago_TipoPagoId]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Venta] DROP CONSTRAINT [FK_Venta_TipoPago_TipoPago_TipoPagoId];
GO
IF OBJECT_ID(N'[dbo].[FK_Usuario_Tipousuario_Tipousuario_Id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Usuario] DROP CONSTRAINT [FK_Usuario_Tipousuario_Tipousuario_Id];
GO
IF OBJECT_ID(N'[dbo].[FK_Usuario_Tipousuario_Tipousuario_Id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Usuario] DROP CONSTRAINT [FK_Usuario_Tipousuario_Tipousuario_Id];
GO
IF OBJECT_ID(N'[dbo].[FK_compra_estado_estado_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Compra] DROP CONSTRAINT [FK_compra_estado_estado_id];
GO
IF OBJECT_ID(N'[dbo].[FK_compra_proveedor_proveedor_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Compra] DROP CONSTRAINT [FK_compra_proveedor_proveedor_id];
GO
IF OBJECT_ID(N'[dbo].[FK_compra_tipopago_tipopago_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Compra] DROP CONSTRAINT [FK_compra_tipopago_tipopago_id];
GO
IF OBJECT_ID(N'[dbo].[FK_compra_usuario_usuario_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Compra] DROP CONSTRAINT [FK_compra_usuario_usuario_id];
GO
IF OBJECT_ID(N'[dbo].[FK_Comuna_Provincia_Provincia_Id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Comuna] DROP CONSTRAINT [FK_Comuna_Provincia_Provincia_Id];
GO
IF OBJECT_ID(N'[dbo].[FK_detallecompra_idcompra_compra_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[DetalleCompra] DROP CONSTRAINT [FK_detallecompra_idcompra_compra_id];
GO
IF OBJECT_ID(N'[dbo].[FK_detallecompra_idprecio_precio_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[DetalleCompra] DROP CONSTRAINT [FK_detallecompra_idprecio_precio_id];
GO
IF OBJECT_ID(N'[dbo].[FK_Permisos_Funcion_Funcion_Id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Permisos] DROP CONSTRAINT [FK_Permisos_Funcion_Funcion_Id];
GO
IF OBJECT_ID(N'[dbo].[FK_Permisos_Usuario_Usuario_Id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Permisos] DROP CONSTRAINT [FK_Permisos_Usuario_Usuario_Id];
GO
IF OBJECT_ID(N'[dbo].[FK_precio_producto_producto_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Precio] DROP CONSTRAINT [FK_precio_producto_producto_id];
GO
IF OBJECT_ID(N'[dbo].[FK_producto_marca_marca_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Producto] DROP CONSTRAINT [FK_producto_marca_marca_id];
GO
IF OBJECT_ID(N'[dbo].[FK_producto_subcategoriaproducto_idsubcategoria]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Producto] DROP CONSTRAINT [FK_producto_subcategoriaproducto_idsubcategoria];
GO
IF OBJECT_ID(N'[dbo].[FK_subcategoriaproducto_categoriaproducto_idcategoria]', 'F') IS NOT NULL
	ALTER TABLE [dbo].[SubcategoriaProducto] DROP CONSTRAINT [FK_subcategoriaproducto_categoriaproducto_idcategoria]
GO
IF OBJECT_ID(N'[dbo].[FK_ImgProducto_ProductoId_Producto_ProductoId]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[ImgProducto] DROP CONSTRAINT [FK_ImgProducto_ProductoId_Producto_ProductoId];
GO
IF OBJECT_ID(N'[dbo].[FK_proveedor_comuna_comuna_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Proveedor] DROP CONSTRAINT [FK_proveedor_comuna_comuna_id];
GO
IF OBJECT_ID(N'[dbo].[FK_proveedor_estado_estado_id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Proveedor] DROP CONSTRAINT [FK_proveedor_estado_estado_id];
GO
IF OBJECT_ID(N'[dbo].[FK_Provincia_Region_Region_Id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Provincia] DROP CONSTRAINT [FK_Provincia_Region_Region_Id];
GO
IF OBJECT_ID(N'[dbo].[FK_Usuario_Activo_Estado_Id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Usuario] DROP CONSTRAINT [FK_Usuario_Activo_Estado_Id];
GO
IF OBJECT_ID(N'[dbo].[FK_Usuario_Tipousuario_Tipousuario_Id]', 'F') IS NOT NULL
    ALTER TABLE [dbo].[Usuario] DROP CONSTRAINT [FK_Usuario_Tipousuario_Tipousuario_Id];
GO


IF OBJECT_ID(N'[dbo].[Compra]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Compra];
GO
IF OBJECT_ID(N'[dbo].[Comuna]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Comuna];
GO
IF OBJECT_ID(N'[dbo].[DetalleCompra]', 'U') IS NOT NULL
    DROP TABLE [dbo].[DetalleCompra];
GO
IF OBJECT_ID(N'[dbo].[Estado]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Estado];
GO
IF OBJECT_ID(N'[dbo].[Funcion]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Funcion];
GO
IF OBJECT_ID(N'[dbo].[Marca]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Marca];
GO
IF OBJECT_ID(N'[dbo].[Opciones]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Opciones];
GO
IF OBJECT_ID(N'[dbo].[Permisos]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Permisos];
GO
IF OBJECT_ID(N'[dbo].[Precio]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Precio];
GO
IF OBJECT_ID(N'[dbo].[ImgProducto]','U') IS NOT NULL
	DROP TABLE [dbo].[ImgProducto]
GO
IF OBJECT_ID(N'[dbo].[Producto]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Producto];
GO
IF OBJECT_ID(N'[dbo].[Proveedor]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Proveedor];
GO
IF OBJECT_ID(N'[dbo].[Provincia]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Provincia];
GO
IF OBJECT_ID(N'[dbo].[Region]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Region];
GO
IF OBJECT_ID(N'[dbo].[TipoPago]', 'U') IS NOT NULL
    DROP TABLE [dbo].[TipoPago];
GO
IF OBJECT_ID(N'[dbo].[TipoUsuario]', 'U') IS NOT NULL
    DROP TABLE [dbo].[TipoUsuario];
GO
IF OBJECT_ID(N'[dbo].[Usuario]', 'U') IS NOT NULL
    DROP TABLE [dbo].[Usuario];
GO

IF OBJECT_ID(N'[dbo].[SubcategoriaProducto]', 'U') IS NOT NULL
	DROP TABLE [dbo].[SubcategoriaProducto];
GO

IF OBJECT_ID(N'[dbo].[CategoriaProducto]', 'U') IS NOT NULL
	DROP TABLE [dbo].[CategoriaProducto];
GO

IF OBJECT_ID(N'[dbo].[Venta]', 'U') IS NOT NULL
	DROP TABLE [dbo].[Venta];
GO

IF OBJECT_ID(N'[dbo].[DetalleVenta]', 'U') IS NOT NULL
	DROP TABLE [dbo].[DetalleVenta];
GO

CREATE TABLE [dbo].[Compra] (
    [CompraId] int IDENTITY(1,1) NOT NULL,
    [Orden] varchar(max)  NOT NULL,
    [Usuario] int  NOT NULL,
    [Proveedor] int  NOT NULL,
    [FechaPedido] datetime  NULL,
    [Comentarios] varchar(max)  NOT NULL,
    [TipoPago] int  NOT NULL,
    [Estado] int  NOT NULL,
    [Documento] varchar(max)  NULL,
    [FechaPago] datetime  NULL,
    [FechaFechaRecivo] datetime  NULL
);
GO

CREATE TABLE [dbo].[DetalleCompra] (
    [DetalleCompraId] int IDENTITY(1,1) NOT NULL,
    [Compra] int  NOT NULL,
    [Precio] int  NOT NULL
);
GO

CREATE TABLE [dbo].[Venta] (
	[VentaId] int IDENTITY(1,1) NOT NULL,
	[Numero] varchar(max) NOT NULL,
	[Estado] int NOT NULL,
	[UsuarioVenta] int NOT NULL,
	[UsuarioCaja] int NOT NULL,
	/*[Cliente] int NOT NULL,*/
	[FechaPedido] datetime NULL,
	[FechaPagado] datetime NULL,
	[TipoPago] int NOT NULL
);
GO

CREATE TABLE [dbo].[DetalleVenta] (
	[DetalleVentaId] int IDENTITY(1,1) NOT NULL,
	[Venta] int NOT NULL,
	[ProductoId] int NOT NULL,
	[Cantidad] int NOT NULL
);

CREATE TABLE [dbo].[Comuna] (
    [ComunaId] int  NOT NULL,
    [NombreComuna] varchar(100)  NULL,
    [Provincia] int  NOT NULL
);
GO

CREATE TABLE [dbo].[Estado] (
    [EstadoId] int  NOT NULL,
    [Descripcion] varchar(max)  NULL
);
GO

CREATE TABLE [dbo].[Funcion] (
    [FuncionId] int IDENTITY(1,1) NOT NULL,
    [Nombre] varchar(max)  NULL,
    [Descripcion] varchar(max)  NULL
);
GO

CREATE TABLE [dbo].[Marca] (
    [MarcaId] int IDENTITY(1,1) NOT NULL,
    [Nombre] varchar(max)  NOT NULL
);
GO

CREATE TABLE [dbo].[Opciones] (
    [OpcionesId] int IDENTITY(1,1) NOT NULL,
    [KeyName] varchar(25)  NULL,
    [Value] varchar(max)  NULL
);
GO

CREATE TABLE [dbo].[Permisos] (
    [PermisosId] int IDENTITY(1,1) NOT NULL,
    [Funcion] int  NOT NULL,
    [Usuario] int  NOT NULL,
    [Valor] int  NOT NULL
);
GO

CREATE TABLE [dbo].[Precio] (
    [PrecioId] int IDENTITY(1,1) NOT NULL,
    [Producto] int  NOT NULL,
    [FechaCreado] datetime  NULL,
    [Costo] decimal(19,4)  NULL,
    [Utilidad] int  NULL,
    [Impuesto] int  NULL,
    [PrecioVenta] decimal(19,4)  NULL,
    [Cantidad] int  NOT NULL,
    [CActual] int  NULL,
    [Valido] int  NOT NULL
);
GO

CREATE TABLE [dbo].[Producto] (
    [ProductoId] int IDENTITY(1,1) NOT NULL,
    [CodBarras] varchar(max)  NULL,
	[IdSubcategoria] int NOT NULL,
    [Descripcion] varchar(max)  NULL,
    [TipoProducto] int  NOT NULL,
    [FechaCreado] datetime  NULL,
    [Marca] int  NOT NULL,
    [Comentarios] varchar(max)  NULL,
    [Minimo] int  NOT NULL
);
GO

CREATE TABLE [dbo].[ImgProducto] (
	[ImgId] int IDENTITY(1,1) NOT NULL,
	[ProductoId] int NOT NULL,
	[Img] Image
);
GO

CREATE TABLE [dbo].[Proveedor] (
    [ProveedorId] int IDENTITY(1,1) NOT NULL,
    [Rut] char(12)  NOT NULL,
    [Nombre] varchar(max)  NULL,
    [Giro] varchar(max)  NULL,
    [Vendedor] varchar(max)  NULL,
    [Telefono] varchar(20)  NULL,
    [Direccion1] varchar(max)  NULL,
    [Direccion2] varchar(max)  NULL,
    [Comuna] int  NOT NULL,
    [Email] varchar(max)  NULL,
    [Web] varchar(max)  NULL,
    [Catalogo] varchar(max)  NULL,
    [Creado] datetime  NULL,
    [Comentarios] varchar(max)  NULL,
    [Estado] int  NOT NULL
);
GO

CREATE TABLE [dbo].[Provincia] (
    [ProvinciaId] int  NOT NULL,
    [Nombre] varchar(100)  NULL,
    [Region] int  NOT NULL
);
GO

CREATE TABLE [dbo].[Region] (
    [RegionId] int  NOT NULL,
    [Nombre] varchar(100)  NULL
);
GO

CREATE TABLE [dbo].[TipoPago] (
    [TipoPagoId] int IDENTITY(1,1) NOT NULL,
    [Descripcion] varchar(max)  NOT NULL
);
GO

CREATE TABLE [dbo].[TipoUsuario] (
    [TipoUsuarioId] int IDENTITY(1,1) NOT NULL,
    [Descripcion] varchar(max)  NULL
);
GO

CREATE TABLE [dbo].[Usuario] (
    [UsuarioId] int IDENTITY(1,1) NOT NULL,
    [Rut] varchar(12)  NULL,
    [NombreUsuario] varchar(max)  NULL,
    [Password] varchar(max)  NULL,
    [TipoUsuario] int  NULL,
    [Email] varchar(max)  NULL,
    [Estado] int  NOT NULL
);
GO

CREATE TABLE [dbo].[CategoriaProducto] (
	[IdCategoria] int IDENTITY(1,1) NOT NULL,
	[NombreCategoria] varchar(30) NOT NULL
);

CREATE TABLE [dbo].[SubcategoriaProducto] (
	[IdSubcategoria] int IDENTITY(1,1) NOT NULL,
	[IdCategoria] int NOT NULL,
	[NombreSubcategoria] varchar(30) NOT NULL
);